package com.study.mike.service;

import cn.hutool.core.lang.tree.Tree;
import com.baomidou.mybatisplus.extension.service.IService;
import com.study.mike.model.dto.QueryUserRoleDTO;
import com.study.mike.model.entity.ResourceDO;
import com.study.mike.model.entity.UserRole;
import com.study.mike.model.dto.UserRoleDTO;
import com.study.mike.model.po.*;

import java.util.List;

/**
 * @author KangHui
 * @Date 2022/8/5 15:47
 */
public interface UserRoleService extends IService<UserRole> {

    /**
     * 用户授予角色列表
     *
     * @param po
     * @return
     */
    List<UserRoleDTO> getUserRoles(GetUserRolePO po);

    /**
     * 获取资源全路径
     * @return
     * @param po
     */
    List<String> getResource(GetUserRolePO po);

    /**
     * 获取资源名全路径-倒叙
     * @return
     * @param po
     */
    List<String> getResourceName(GetUserRolePO po);

    /**
     * 获取资源数-正序
     * @param po
     * @return
     */
    List<String> getResourceNameASC(GetUserRolePO po);

    /**
     * treeInfo
     * @param po
     * @return
     */
    List<QueryUserRoleDTO> treeInfo(GetUserRolePO po);

    /**
     * 授予用户资源
     * @param po
     * @return
     */
    Boolean grantUserResources(GrantUserResourcesPO po);

    /**
     * 新增资源
     * @param po
     * @return
     */
    ResourceDO addResource(AddResourcePO po);

    /**
     * 编辑资源
     * @param po
     * @return
     */
    ResourceDO editResource(EditResourcePO po);

    /**
     * 新增or更新资源
     * @param saveOrUpdateResourcePO
     * @return
     */
    ResourceDO saveOrUpdateResource(SaveOrUpdateResourcePO saveOrUpdateResourcePO);

    /**
     * 用户授予角色
     * @param rolePO
     * @return
     */
    Boolean grantUserRole(GrantUserRolePO rolePO);

}
